#include "main.h"

float T;
void main()
{
	float Temp;
	unsigned char Key=0;
	char TH=0;
	char TL=0;
	LCD_Init();
	Timer0Init();
	DS18B20_Temp();
	Delay(1000);
	LCD_ShowString(1,1,"T:");
	LCD_ShowString(2,1,"TH:");
	LCD_ShowString(2,9,"TL:");
	while(1)
	{
		DS18B20_Temp();		//转换温度
		T=DS18B20_ReadTemp();	//读取温度
		Temp=T;
		if(Temp>TH)
		{
			LCD_ShowString(1,11,"OV.H");
		}
		else if(Temp<TL)
		{
			LCD_ShowString(1,11,"OV.L");
		}
		else
		{
			LCD_ShowString(1,11,"    ");
		}
		if(T<0)				//如果温度小于0
		{
			LCD_ShowChar(1,3,'-');	//显示负号
			T=-T;			//将温度变为正数
		}
		else				//如果温度大于等于0
		{
			LCD_ShowChar(1,3,'+');	//显示正号
		}
		LCD_ShowNum(1,4,T,3);		//显示温度整数部分
		LCD_ShowChar(1,7,'.');		//显示小数点
		LCD_ShowNum(1,8,(unsigned long)(T*10000)%10000,2);
		TH=AT24C02_Read(0);
		TL=AT24C02_Read(1);
		LCD_ShowSignedNum(2,4,TH,3);
		LCD_ShowSignedNum(2,12,TL,3);
//(T*10000)显示温度的整数与小数部分超过65536，所以定义为unsigned long//%10000求的是最后4位
		Key=key();
		if(Key)
		{
			if(Key==1)
			{
				if(TH<=125)
				TH++;
			}
			if(Key==2)
			{
				if(TH>=-55&&TH>TL+1)
				TH--;
			}
			if(Key==3)
			{
				if(TL<=125&&TL<TH-1)
				TL++;
			}
			if(Key==4)
			{
				if(TL>=-55)
				TL--;
			}
		LCD_ShowNum(1,14,Key,1);


		}
		AT24C02_Write(0,TH);
		Delay(5);
		AT24C02_Write(1,TL);
		Delay(5);
	}
}




void Timer_Cut() interrupt 1
{
    static unsigned int KEY_Count = 0; // 定义计数变量
    
    TL0 = 0x66;     // 设置定时初值（低字节）
    TH0 = 0xFC;     // 设置定时初值（高字节）
    
    KEY_Count++;    // 每次中断触发，计数加1
    
    if (KEY_Count == 10) // 判断计数是否达到预定值（避免误触）
    {
        KEY_Count = 0;   // 计数清零
        key_scan();      // 调用按键扫描函数
    }
}